CONNECTOR PICA-NOTIFICACIONS ELECTRÒNIQUES










Introducció

L'objectiu d'aquest connector, és el de proporcionar un punt d'accés utilitzant la plataforma PICA cap al sistema de notificacions de la Generalitat de Catalunya "eNotum v.2", permetent l'enviament i la consulta de trameses de notificacions, consulta d'estats i detall de les notificacions per un ciutadà o empleat públic i l'acceptació i rebuig de les mateixes entre d'altres.

Propòsit

El propòsit del connector és proporcionar una interfície funcional reduida al connector de la Pica que simplifica l'utilització del servei de Notificacions Telemàtiques de la Generalitat.

Context i Escenaris d'ús

El connector de Notificacions Electròniques es troba dins els connectors de serveis funcionals de la Generalitat.

Versions i Dependències

En el present apartat es mostren quines són les versions i dependències necessàries per fer ús del Connector.

Les dependències descrites a la següent url són requerides per tal de fer funcionar el servei:
Dependències del Connector eNotum

A qui va dirigit

Aquest document va dirigit als següents perfils:

  1. Programador. Per conéixer l'ús del connector.
  2. Arquitecte. Per conéixer quins són els components i la configuració del connector.

Documents i Fonts de Referència

[1] Guia d'ús de l'API del Connector NT.
[2] Documentació funcional i tècnica del Connector NT.

Descripció Detallada

Aquest connector permet realitzar les següents funcionalitats referents a les notificacions telemàtiques:

Funcionalitats per a l'empleat públic

  • Enviar Notificacions: Creació d'una nova notificació electrònica al sistema E-Notum per part del sistema requeridor de notificacions telemàtiques.
  • Consultar notificacions destinatari: Consulta de les notificacions telemàtiques adreçades al destinatari.
  • Consultar detall notificació: Visualització d'una notificació telemàtica per part d'un empleat públic.
  • Consultar evidències notificació: Consulta de les evidències d'una notificació telemàtica gestionades per eNotum.
  • Consultar PDF notificació: Permet obtenir un PDF a partir de la notificació.

Funcionalitats per al ciutadà

  • Consultar detall notificació: Visualització d'una notificació telemàtica per part del destinatari.
  • Consultar notificacions destinatari: Consulta de les notificacions telemàtiques adreçades al destinatari.
  • Preparar estat notificació: Preparar la notificació per a poder modificar l'estat.
  • Modificar estat notificació: Permet canviar l'estat d'una notificació telemàtica, per qüestions de seguretat un usuari només pugui canviar d'estat les seves pròpies notificacions.
  • Consultar PDF notificació: Permet obtenir un PDF a partir de la notificació.

Arquitectura i Components

Interfícies i Components Genèrics

Es pot trobar tota la documentació JavaDoc i el codi font referent aquests components a les següents url's:

JavaDoc: http://canigo.ctti.gencat.net/confluence/canigodocs/site/canigo2_3_10/canigo-connectors-root/canigo-connectors-nt/apidocs/index.html
Codi Font:  http://canigo.ctti.gencat.net/confluence/canigodocs/site/canigo2_3_10/canigo-connectors-root/canigo-connectors-nt/xref/index.html

Requeriments

El connector de Notificacions Electròniques és compatible amb les versions 1.5 o superior de Java. Per versions inferiors no es garantitza el seu correcte funcionament.

Per tal de que el connector eNotum funcioni correctament sobre l'aplicació que l'utilitzi, es s'ha de tenir configurat el servei connector genèric de la PICA 1.0.

Instal.lació i Configuració

Instal.lació

La instal.lació del connector requereix de la utilització de la llibreria 'canigo-connectors-nt' i les dependències indicades a l'apartat 'Introducció-Versions i Dependències'.

Per poder disposar del Connector de Notificacions electròniques en una aplicació Canigó s'ha de modificar el pom.xml de l'aplicació per incloure la llibreria del Connector com a dependència.

<dependency>
        <groupId>canigo.connectors</groupId>
        <artifactId>canigo-connectors-nt</artifactId>
        <version>1.0.2</version>
</dependency>

Configuració


Per poder configurar el connector eNotum és necessari tenir configurat el connector genèric a la PICA.

<bean id="requeridor" class="cat.gencat.pica.peticio.core.beans.Requeridor" singleton="true">
<property name="fitxerSignatura" value="signatura.properties"> </property>
	<property name="idSolicitante" value="1DPGO049"></property>
	<property name="idTransmision" value="213421"></property>
	<property name="nombreSolicitante" value="CTTI"></property>

	<property name="password" value="password"></property>
	<property name="user" value="usuari"></property>

</bean>

<bean name="ProducteModalitatBase" abstract="true" class="cat.gencat.pica.peticio.core.beans.ProducteModalitat">
	<property name="passwordType" value="PasswordText"></property>
</bean>

<bean id="picaService" class="net.gencat.ctti.canigo.connectors.pica.impl.PicaServiceWrapper" singleton="false">
	<property name="axisDefinition" value="classpath:axis2client/"></property>

	<property name="loggingService" ref="loggingService"></property>
	<property name="requeridor" ref="requeridor"></property>
	<property name="modalitats"> 
		<map>
			...
		</map>
	</property>
</bean>


Per a configurar el connector enotum, només cal afegir aquest bean informant la url de la pica que es vol utilitzar per a consumir els serveis NT.

<bean id="ntService" class="net.gencat.ctti.canigo.connectors.enotum.impl.EnotumConnectorImpl" singleton="false">
	<property name="picaService" ref="picaService"></property>
	<property name="loggingService" ref="loggingService"></property>
	<property name="finalitat" value="TEST"></property>
	<property name="nifEmisor" value="nifEmisor" />
	<property name="nomEmisor" value="nomEmisor" />
	<property name="urlPica" value="http://preproduccio.pica.intranet.gencat.cat/pica_cataleg/AppJava/services/" />
	<property name="funcionari" ref="funcionari" />
</bean>

<bean id="funcionari" class="cat.gencat.pica.peticio.core.beans.Funcionari">
	<property name="nifFuncionario" value="nifFuncionari"/>
	<property name="nombreFuncionario" value="nombreFuncionari"/>
	<property name="emailFuncionario" value="emailFuncionario"/>
</bean>

Utilització del Connector


Exemple d'utilització Empleat Públic (Consultar detall notificació) amb connector funcional de Notificacions electròniques

Referenciar al servei enotum des de l'acció que es vulgui utilitzar (action-servlet-aaa.xml):

<property name="connectorNT" ref="ntService"></property>

En l'acció, s'hauran de crear els getters i setters corresponents per al connector de notificacions electròniques:

private EnotumConnectorImpl connectorEnotum;
public EnotumConnectorImpl getConnectorEnotum() {
	return connectorEnotum;
}

public void setConnectorEnotum(EnotumConnectorImpl connectorEnotum) {
	this.connectorEnotum = connectorEnotum;
}

Per a consultar l'estat de la tramesa simplement s'haurà de realitzar la següent crida:

PeticioNtConsultarDetallNotificacioEPDocument dades = PeticioNtConsultarDetallNotificacioEPDocument.Factory.newInstance();
PeticioNtConsultarDetallNotificacioEP peticioNotificacio = PeticioNtConsultarDetallNotificacioEP.Factory.newInstance();
peticioNotificacio.setIdNotificacioNT("142882");
dades.setPeticioNtConsultarDetallNotificacioEP(peticioNotificacio);
RespostaNtConsultarDetallNotificacioEPDocument resposta = enotumConnector.getServeisEmpleatPublic(getFuncionari()).consultarDetallNotificacio(dades);

Si no es produeix cap error, resposta.getError() ha de ser null. Si es produeix un error intern en la pica o el connector enotum, resposta.getError() vindrà informat amb el detall de l'error. I si es produeix una excepció en el connector es llançarà una excepció EnotumException.

Exemple d'utilització Ciutadà (Consultar detall notificació) amb connector funcional de notificacions electròniques

EnotumConnectorImpl enotumConnector = (EnotumConnectorImpl) beanFactory.getBean("enotumService");
PeticioNtConsultarDetallNotificacioDocument dades = PeticioNtConsultarDetallNotificacioDocument.Factory.newInstance();  	
PeticioNtConsultarDetallNotificacio peticioNotificacio = PeticioNtConsultarDetallNotificacio.Factory.newInstance();   	
peticioNotificacio.setIdNotificacioNT("142882");    	
peticioNotificacio.setCertificat64("MIIHsjCCBpqgAwIBAgI...");    	
peticioNotificacio.setPerfil("20");    	
dades.setPeticioNtConsultarDetallNotificacio(peticioNotificacio);    	
RespostaNtConsultarDetallNotificacioDocument resposta = enotumConnector.getServeisCiutada().consultarDetallNotificacio(dades);

Exemple d'utilització Empleat Públic (Consultar estat tramesa) Utilitzant el connector genèric a la PICA.

S'haurà d'afegir en la definició del servei pica, un producte modalitat segons la funcionalitat que es vulgui utilitzar, per el cas de Consultar tramesa s'hauria d'afegir:

<property name="modalitats">
	<map>
		...
                  <entry key="NT_CONSULTAR_ESTAT_TRAMESA">
			<bean parent="ProducteModalitatBase">
				<property name="signat" value="false"></property>
				<property name="urlPICA" value="http://preproduccio.pica.gencat.intranet/pica_cataleg/AppJava/services/NT_ENVIAR_TRAMESA" />
				<property name="codCertificado" value="NT_CONSULTAR_ESTAT_TRAMESA"/>
				<property name="codProducto" value="NT"/>
			</bean>
		</entry>
	</map>
</property>

Referenciar al servei PICA des de l'acció que es vulgui utilitzar (action-servlet-aaa.xml):

<property name="connectorPica" ref="picaService"></property>

En l'acció, s'hauran de crear els getters i setters corresponents per al connectorPica:

private IPicaServiceWrapper connectorPica;
public IPicaServiceWrapper getConnectorPica() {
	return connectorPica;
}

public void setConnectorPica(IPicaServiceWrapper connectorPica) {
	this.connectorPica = connectorPica;
}

S'haurà de recuperar el producte modalitat de la PICA:

IPICAServiceSincron servei = connectorPica.getPicaWebServiceSincronInstance("NT_CONSULTAR_ESTAT_TRAMESA");

Creació de l'XML per a dades específiques:

StringBuffer sb = new StringBuffer();
sb.append("<peticio_nt_consultar_estat_tramesa xmlns=\"http://gencat.net/scsp/esquemes/productes/nt\">");
sb.append("<tramesa><idTramesaNT>" + idTramesaNT + "</idTramesaNT></tramesa>");
sb.append( "</peticio_nt_consultar_estat_tramesa>" );
List<DadesEspecifiques> dadesEspecifiques = new ArrayList<DadesEspecifiques>();

DadesEspecifiques dades = new DadesEspecifiques();
dades.setIdSolicitud("1");
dades.setDadesXML(sb.toString());
dadesEspecifiques.add(dades);

servei.setDadesEspecifiques(dadesEspecifiques);

Realitzar la crida al servei:

Funcionari funcionari = new Funcionari();
funcionari.setNombreFuncionario("Nom Funcionari");
funcionari.setNifFuncionario("55555555A");
funcionari.setEmailFuncionario("func@ionari.com");

servei.setFuncionari(funcionari);

servei.setFuncionari(this.funcionari);
try {
	servei.crearPeticio("connector_eNotum_empleat_public_" + System.currentTimeMillis() );
} catch (PICAException e) {
	throw e;
}
CridaSincronaResponseDocument resposta = picaService.ferPeticioAlServei(servei);

El resultat de la resposta es pot obtenir fent resposta.getDomNode(), i per tant s'haurà de parsejar el resultat.